
這題的目標是將一個字串中的每個字母都向後移動一定的位數。移動的位數由一個整數陣列指定,該陣列的長度與字串的長度相同。例如,如果我們有一個字串 abc 和一個陣列 [3, 5, 9],那麼我們會將 a 向後移動 3 位得到 d,將 b 向後移動 5 位得到 g,將 c 向後移動 9 位得到 l,所以最終結果為 dgl。
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會來啦!能與優秀的程式設計師共事,是特別痛快的事,因為厲害的工程師大神會刺激你想要迎頭趕上的上進心,尤其是一起討論解決方案時,他們會觸發你有更好的解決思維能力,彼此共同成長並且一起享受解謎與破關般的樂趣。 你一定聽得懂我在說甚麼感覺,趕快把握機會,動動手指投遞履歷吧! 立即加入「面試讀書會」,和大家一起準備面試!
內推機會
加入讀書會 (邀請碼:5657)
首先初始化一個變數 sum 為 0 和一個與 s 相同的字元陣列 ans。然後,從後向前遍歷 s 中的每個字元。對於每個字元,將 shifts 陣列中對應位置的值加到 sum 上,然後將目前字元向後移動 sum 個位數。最後,回傳 ans 陣列轉換成的字串。
class Solution {
    fun shiftingLetters(s: String, shifts: IntArray): String {
        var sum = 0
        val ans = s.toCharArray()
        val maxIndex = s.length - 1
        for (index in s.indices) {
            sum = (sum + shifts[maxIndex - index] % 26) 
            ans[maxIndex - index] = ((ans[maxIndex - index].toInt() + sum - 97) % 26 + 97).toChar()
        }
        return String(ans)
    }
}
時間複雜度:,其中 
 是 
s 的長度。這是因為我們需要遍歷 s 中的每個字元。
空間複雜度:,其中 
 是 
s 的長度。這是因為我們需要宣告一個新的字串來存儲結果。此外,我們還需要存儲 shifts 陣列。
內推機會來啦!
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會
加入讀書會 (邀請碼:5657)